package com.xiangyang.mapper;

import com.xiangyang.entity.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

import java.util.List;

@Mapper
public interface IPatientsMapper {
    //添加患者，自动生成患者id，通过患者名字和患者电话确定唯一患者
    int insertPatient(@Param("patientName")String patientName,@Param("patientPhone") String patientPhone);
    //通过患者id，名字，电话来查询患者，获取患者信息
    Patients selectPatientByName(@Param("patientId")Long patientId,@Param("patientName")String patientName,@Param("patientPhone") String patientPhone);
    //获取患者id添加患者详情，通过状态id来确定是否为已挂号状态添加信息
    int addPatientDetails(@Param("patientDetails")PatientDetails patientDetails);
    //查询所有挂号信息，通过状态id查找未出院信息
    List<PatientDetails> selectPatientDetails(Long statusId);
    //查询所有挂号信息，通过状态id,患者id查找未出院信息
    PatientDetails selectPatientDetailsById(@Param("statusId")Long statusId, @Param("patientsId")Long patientsId);
    //通过医生id查询医生名称和医生科室
    PatientInformation selectEmployeeByemployeeId(Long doctorId);
    //通过挂号id查询挂号信息
    PatientDetails selectPatientDetailsByRegistrationId(Long registrationId);
    //修改挂号信息，通过患者id和状态id来确定是正在挂号的某个患者的信息
    int updatePatientDetails(@Param("patientId")Long patientId,@Param("statusId")Long statusId,@Param("statusId")PatientDetails patientDetails,@Param("patientDetails")String updatedAt);
    //添加就诊信息
    int insertCaseHistory(CaseHistory caseHistory);
    //查询所有就诊信息
    List<CaseHistory> selectCaseHistory();
    //通过挂号id获取就诊信息的病例id
    Long selectCaseHistoryByRegistrationId(Long registrationId);
    //通过病例id修改患者症状和患者诊断结果和备注
    int updateCaseHistoryByPatientId(@Param("caseHistoryId")Long caseHistoryId,@Param("symptom")String symptom,@Param("diagnosis")String diagnosis,@Param("remark")String remark);
    //通过挂号id修改病例信息中的处方id和备注
    int updateCaseHistory(Long registrationId,Long prescriptionId,String remark);
    //查询患者详情，通过患者id来获取挂号信息
    List<PatientInformation> selectCaseHistoryByPatientId(Long statusId);
    //查询单条就诊信息，通过病例id来获取挂号信息
    CaseHistory selectCaseHistoryById(Long caseHistoryId);
    //查询单条就诊信息，通过病例id来获取挂号信息
    List<CaseHistoryTion> selectCaseHistoryByIdList(Long caseHistoryId);
    //添加集合到处方表
    int insertPrescription(Prescription prescriptionList);
    //通过处方id查询多条处方详情
    List<Prescription> selectPrescriptionByPrescriptionId(Long prescriptionId);
    //通过医生id查询医生姓名
    String selectEmployeeName(Long doctorId);
    //通过科室和医生名称获取医生id
    Long selectEmployeeId(String departmentName,String doctorName);
}
